package com.base.component.ai.platform.baidu;

import java.io.Serializable;

import com.base.component.ai.platform.core.converter.PromptResultConverterEditor;
import com.gitee.magic.core.annotations.Column;
import com.gitee.magic.core.converter.PropertyConverter;

import lombok.Data;

/**
 * 
 * @author start
 *
 */
@Data
public class WxChatCompletionsVO implements Serializable {

    private static final long serialVersionUID = 1L;
	/**
     * 本轮对话的id
     */
    private String id;
    /**
     * 回包类型
     * chat.completion：多轮对话返回
     */
    private String object;
    /**
     * 时间戳
     */
    private Long created;
    /**
     * 表示当前子句的序号。只有在流式接口模式下会返回该字段
     */
    @Column("sentence_id")
    private Integer sentenceId;
    /**
     * 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段
     */
    @Column("is_end")
    private Boolean end;
    /**
     * 当前生成的结果是否被截断
     */
    @Column("is_truncated")
    private Boolean truncated;
    /**
     * 生成的结果
     */
    @PropertyConverter(PromptResultConverterEditor.class)
    private String result;
    /**
     * 表示用户输入是否存在安全，是否关闭当前会话，清理历史回话信息。
     * true：是，表示用户输入存在安全风险，建议关闭当前会话，清理历史会话信息。
     * false：否，表示用户输入无安全风险
     */
    @Column("need_clear_history")
    private Boolean needClearHistory;
    /**
     * 当need_clear_history为true时，此字段会告知第几轮对话有敏感信息，如果是当前问题，ban_round=-1
     */
    @Column("ban_round")
    private Integer banRound;
    
    /**
     * token统计信息，token数 = 汉字数+单词数*1.3 （仅为估算逻辑）
     */
    private Usage usage;

    @Data
    public static class Usage {
    	
        @Column("prompt_tokens")
        private int promptTokens;

        @Column("completion_tokens")
        private int completionTokens;

        @Column("total_tokens")
        private int totalTokens;
        
    }
}
